# -*- coding: utf-8 -*-


from qgis.core import(
    QgsPointXY,
    QgsGeometry
)

from PyQt5.QtGui import (
    QTransform
)

import math

@staticmethod
def CalculateAngle(p1: QgsPointXY, p2: QgsPointXY):
    """
    计算两点间的角度
    @param p1: 起点
    @param p2: 终点
    @return: 角度，单位为弧度
    """
    dx = p2.x() - p1.x()
    dy = p2.y() - p1.y()
    return math.atan2(dy, dx) * 180 / math.pi


@staticmethod
def RotationApply(p1:QgsPointXY, angle:float,geom: QgsGeometry):
    """
    对geometry进行旋转
    @param p1: 旋转中心点
    @param angle: 旋转角度，单位为弧度
    @param geom: 要旋转的geometry
    """
    angle = angle * math.pi / 180
    transform = QTransform()
    transform.translate(p1.x(), p1.y())
    transform.rotateRadians(angle)#* math.pi / 270
    transform.translate(-p1.x(), -p1.y())
    geom.transform(transform)
